import Vue from "vue";
import VueI18n from "vue-i18n";

Vue.use(VueI18n);

// 工具函数：导入某目录下的所有 json 文件
function loadLocaleMessages() {
  const locales = require.context(
    "./locales", // 扫描的目录
    true,// 是否递归查找子目录
    /[a-z0-9-]+\/[a-z0-9-]+\.json$/i // 匹配文件的正则表达式
  );
  const messages = {};

  locales.keys().forEach((key) => { //  输出可能: ["./en/home.json", "./zh-CN/common.json", "./fr/user/profile.json"]
    const matched = key.match(/([a-z0-9-]+)\/([a-z0-9-]+)\.json$/i);
    if (matched && matched.length > 2) {
      const locale = matched[1]; // 比如 en 或 zh-CN
      const fileName = matched[2]; // 比如 home
      if (!messages[locale]) messages[locale] = {};
      messages[locale][fileName] = locales(key);
    }
  });
  return messages;
}

// 获取用户首选语言
const getLocale = () => {
  // 读取缓存默认语言
  const getLocaleValue = localStorage.getItem("locale");
  // 默认语言不存在时
  if(!getLocaleValue) {
    // 设置默认语言为中文
    localStorage.setItem("locale", 'zh-CN');
    return 'zh-CN'
  } 
  return getLocaleValue
};

const i18n = new VueI18n({
  locale: getLocale(),
  fallbackLocale: "en",
  messages: loadLocaleMessages(),
});

export default i18n;
